﻿using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;

namespace CRM.Database.Model
{
    public partial class AgreementElements : IGetKeyValue, IGetNamesValues, ISetChangedUser
    {
        [Required(ErrorMessage = "Необходимо выбрать юридическое лицо")]
        public int IdLegalEntityExt
        {
            get { return IdLegalEntity; }
            set { IdLegalEntity = value; }
        }


        [Required(ErrorMessage = "Необходимо указать почтовый индекс")]
        [RegularExpression("[0-9]{6}", ErrorMessage = "Почтовый индекс должен содержать только шесть цифр")]
        public string PostIndexExt
        {
            get { return PostIndex; }
            set { PostIndex = value; }
        }


        [Required(
            ErrorMessage = "Необходимо указать фамилию, имя и отчество генерального директора в родительном падеже")]
        public string FIOGenDirInRPExt
        {
            get { return FIOGenDirInRP; }
            set { FIOGenDirInRP = value; }
        }


        [Required(ErrorMessage = "Необходимо указать фамилию, имя и отчество генерального директора")]
        public string FIOGenDirExt
        {
            get { return FIOGenDir; }
            set { FIOGenDir = value; }
        }


        [Required(ErrorMessage = "Необходимо указать почтовый адрес (без индекса)")]
        public string FullAddressExt
        {
            get { return FullAddress; }
            set { FullAddress = value; }
        }


        [Required(ErrorMessage = "Необходимо указать ИНН")]
        [RegularExpression("[0-9]*", ErrorMessage = "ИНН может содержать только цифры")]
        public string INNExt
        {
            get { return INN; }
            set { INN = value; }
        }


        [Required(ErrorMessage = "Необходимо указать КПП")]
        public string KPPExt
        {
            get { return KPP; }
            set { KPP = value; }
        }


        [Required(ErrorMessage = "Необходимо указать расчётный счёт")]
        public string RSExt
        {
            get { return RS; }
            set { RS = value; }
        }


        [Required(ErrorMessage = "Необходимо указать к/с")]
        public string KSExt
        {
            get { return KS; }
            set { KS = value; }
        }


        [Required(ErrorMessage = "Необходимо указать БИК")]
        public string BIKExt
        {
            get { return BIK; }
            set { BIK = value; }
        }


        [Required(ErrorMessage = "Необходимо указать банк")]
        public string BankExt
        {
            get { return Bank; }
            set { Bank = value; }
        }


        [Required(ErrorMessage = "Необходимо указать ОГРН")]
        public string OGRNExt
        {
            get { return OGRN; }
            set { OGRN = value; }
        }


        /// <summary>
        /// Название юридического лица
        /// </summary>
        public string LegalEntityName
        {
            get
            {
                if (LegalEntities == null)
                    return "";
                return LegalEntities.Name;
            }
        }

        #region Implementation of IGetKeyValue

        /// <summary>
        /// Получение ключего значения элемента
        /// </summary>
        /// <returns>Ключевое значение</returns>
        public int GetKeyValue()
        {
            return IdAgreementElement;
        }

        #endregion

        #region Implementation of IGetNamesValues

        /// <summary>
        /// Получение списка имён
        /// </summary>
        /// <returns>Список имён</returns>
        public List<string> GetNamesValues()
        {
            return new List<string>();
        }

        #endregion

        #region Implementation of ISetChangedUser

        /// <summary>
        /// Установка пользователя, который сделал изменение
        /// </summary>
        /// <param name="userLogin">Логин пользователя</param>
        public void SetChangedUser(string userLogin)
        {
            if (string.IsNullOrEmpty(userLogin))
                throw new Exception("Логин пользователя не должен быть пустым");

            IdUser = userLogin;
        }

        #endregion
    }
}